<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="maps.uri" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
  <xsl:param name="entity" />
  <xsl:param name="filter" />
  <xsl:template match="/columnset" name="temp">
    <xsl:element name="fetch">
      <xsl:attribute name="page">
        <xsl:value-of select="@page" />
      </xsl:attribute>
      <xsl:attribute name="count">
        <xsl:value-of select="@count" />
      </xsl:attribute>
      <xsl:element name="entity">
        <xsl:attribute name="name">
          <xsl:value-of select="$entity" />
        </xsl:attribute>
        <xsl:apply-templates select="*" />
        <xsl:element name="filter">
          <xsl:attribute name="type">and</xsl:attribute>
          <xsl:call-template name="filters">
            <xsl:with-param name="list" select="concat($filter,',')" />
          </xsl:call-template>
        </xsl:element>
      </xsl:element>
    </xsl:element>
  </xsl:template>
  <xsl:template name="filters">
    <xsl:param name="list" />
    <xsl:variable name="flist" select="$list" />
    <xsl:choose>
      <xsl:when test="$flist!=','">
        <xsl:variable name="fparam" select="substring-before($flist, ',')" />
        <xsl:variable name="rest" select="substring-after($flist, ',')" />
        <xsl:choose>
          <xsl:when test="$rest!=''">
            <xsl:variable name="fvalue" select="substring-before($rest, ',')" />
            <xsl:variable name="rest2" select="substring-after($rest, ',')" />
            <xsl:element name="condition">
              <xsl:attribute name="attribute">
                <xsl:value-of select="$fparam" />
              </xsl:attribute>
              <xsl:attribute name="operator">eq</xsl:attribute>
              <xsl:attribute name="value">
                <xsl:value-of select="$fvalue" />
              </xsl:attribute>
            </xsl:element>
            <xsl:call-template name="filters">
              <xsl:with-param name="list" select="$rest2" />
            </xsl:call-template>
          </xsl:when>
        </xsl:choose>
      </xsl:when>
    </xsl:choose>
  </xsl:template>
  <xsl:template match="column">
    <xsl:element name="attribute">
      <xsl:attribute name="name">
        <xsl:value-of select="text()" />
      </xsl:attribute>
      <xsl:apply-templates select="*" />
    </xsl:element>
  </xsl:template>
  <xsl:template match="ascend">
    <xsl:element name="order">
      <xsl:attribute name="attribute">
        <xsl:value-of select="text()" />
      </xsl:attribute>
      <xsl:attribute name="descending">false</xsl:attribute>
      <xsl:apply-templates select="*" />
    </xsl:element>
  </xsl:template>
  <xsl:template match="descend">
    <xsl:element name="order">
      <xsl:attribute name="attribute">
        <xsl:value-of select="text()" />
      </xsl:attribute>
      <xsl:attribute name="descending">true</xsl:attribute>
      <xsl:apply-templates select="*" />
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>